Skip to content

[Storage] get_account_info all clients, set/get_tags for BlobClient, set_properties for BlobServiceClient #2795

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 29 commits into from
Aug 19, 2025

Conversation

vincenttran-msft
Copy link
Member

@vincenttran-msft vincenttran-msft commented Jul 15, 2025

.tsp: Azure/azure-rest-api-specs#36677

BlobClientSetTagsResult
• ̶ ̶D̶a̶t̶e̶

BlobClientGetAccountInfoResult
• Date
• Account_kind
• Is_hns_enabled
• Sku_name

BlobContainerClientGetAccountInfoResult
• ̶ ̶D̶a̶t̶e̶
• Account_kind
• Is_hns_enabled
• Sku_name

BlobServiceClientGetAccountInfoResult
• ̶ ̶D̶a̶t̶e̶
• Account_kind
• Is_hns_enabled
• Sku_name

@github-actions github-actions bot added the Storage Storage Service (Queues, Blobs, Files) label Jul 15, 2025
Copy link

github-actions bot commented Jul 15, 2025

API Change Check

APIView identified API level changes in this PR and created the following API reviews

azure_storage_blob

@vincenttran-msft vincenttran-msft marked this pull request as ready for review July 17, 2025 23:10
@Copilot Copilot AI review requested due to automatic review settings July 17, 2025 23:10
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds new functionality to the Azure Storage Blob client library, implementing get_account_info for all clients, set/get_tags and start_copy_from_url for BlobClient, and set_properties for BlobServiceClient. These additions align with the Azure REST API specifications and provide essential blob management capabilities.

  • Adds account information retrieval across all client types (BlobClient, BlobContainerClient, BlobServiceClient)
  • Implements blob tagging functionality with set/get operations for BlobClient
  • Adds blob copy functionality and service properties management

Reviewed Changes

Copilot reviewed 11 out of 14 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
sdk/storage/azure_storage_blob_test/src/lib.rs Adds utility function for comparing blob tags in tests
sdk/storage/azure_storage_blob/src/parsers.rs Implements blob tags serialization helper function
sdk/storage/azure_storage_blob/src/models/mod.rs Exports new model types for account info, tags, and copy operations
sdk/storage/azure_storage_blob/src/clients/blob_service_client.rs Adds set_properties and get_account_info methods
sdk/storage/azure_storage_blob/src/clients/blob_container_client.rs Adds get_account_info method
sdk/storage/azure_storage_blob/src/clients/blob_client.rs Adds start_copy_from_url, set_tags, get_tags, and get_account_info methods
sdk/storage/azure_storage_blob/tests/ Comprehensive test coverage for all new functionality
Comments suppressed due to low confidence (3)

sdk/storage/azure_storage_blob_test/src/lib.rs:124

  • [nitpick] The function name test_blob_tag_equality doesn't follow the naming convention for utility functions. Consider renaming to compare_blob_tags or blob_tags_equal since it's not a test function itself but a helper for tests.
pub fn test_blob_tag_equality(tags1: BlobTags, tags2: BlobTags) -> bool {

sdk/storage/azure_storage_blob_test/src/lib.rs:125

  • The variable name count_map is misleading since it stores key-value pairs from tags, not counts. Consider renaming to tag_map or first_tags_map to better reflect its purpose.
    let mut count_map = HashMap::new();

sdk/storage/azure_storage_blob/src/parsers.rs:50

  • Variable names k and v are too short and unclear. Consider using more descriptive names like key and value to improve readability.
    for (k, v) in tags.into_iter() {

@vincenttran-msft vincenttran-msft changed the title [Storage] get_account_info all clients, set/get_tags and start_copy_from_url for BlobClient, set_properties for BlobServiceClient [Storage] get_account_info all clients, set/get_tags for BlobClient, set_properties for BlobServiceClient Jul 21, 2025
@vincenttran-msft
Copy link
Member Author

Also, I believe I'm stumbling upon a pretty fun issue 😄
Since we refactored set_tags to accept a HashMap<String, String> and then call our helper to serialize it into the proper form, BlobTags, due to the unordered nature of HashMaps, the resultant BlobTags object can have two different forms, and this will trigger a test recording failure:
Scenario 1:

<Tags>
	<TagSet>
		<Tag>
			<Key>hello</Key>
			<Value>world</Value>
		</Tag>
		<Tag>
			<Key>ferris</Key>
			<Value>crab</Value>
		</Tag>
	</TagSet>
</Tags>",

Scenario 2:

<Tags>
	<TagSet>
		<Tag>
			<Key>ferris</Key>
			<Value>crab</Value>
		</Tag>
		<Tag>
			<Key>hello</Key>
			<Value>world</Value>
		</Tag>
	</TagSet>
</Tags>",

I am wondering if this is something we can resolve at the test proxy level (i.e. sort alphabetically before comparing) at least in areas where order shouldn't matter.

@heaths heaths marked this pull request as draft August 4, 2025 22:57
@vincenttran-msft vincenttran-msft marked this pull request as ready for review August 11, 2025 18:05
@vincenttran-msft vincenttran-msft marked this pull request as draft August 11, 2025 19:25
@vincenttran-msft vincenttran-msft marked this pull request as ready for review August 11, 2025 19:25
@vincenttran-msft vincenttran-msft marked this pull request as draft August 14, 2025 00:46
@vincenttran-msft vincenttran-msft marked this pull request as ready for review August 14, 2025 01:33
Copy link
Member

@heaths heaths left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't waste time sorting in production. Even if you need to, there are more efficient ways of doing so in production code.

@vincenttran-msft vincenttran-msft marked this pull request as draft August 18, 2025 23:14
Copy link
Member

@heaths heaths left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Need to fix a lint issue, but otherwise LGTM.

@vincenttran-msft vincenttran-msft marked this pull request as ready for review August 19, 2025 21:54
@vincenttran-msft vincenttran-msft merged commit b8f592a into Azure:main Aug 19, 2025
17 checks passed
@vincenttran-msft vincenttran-msft deleted the vincenttran/post_v3_pr branch August 19, 2025 21:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Storage Storage Service (Queues, Blobs, Files)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants